home *** CD-ROM | disk | FTP | other *** search
/ Clickx 23 / Clickx 23.iso / DATA / moveabletype / MT-3.2-en_US / mt-send-entry.cgi < prev    next >
Encoding:
Text File  |  2005-07-29  |  2.2 KB  |  90 lines

  1. #!/usr/bin/perl -w
  2.  
  3. # Copyright 2001-2005 Six Apart. This code cannot be redistributed without
  4. # permission from www.sixapart.com.  For more information, consult your
  5. # Movable Type license.
  6. #
  7. # $Id: mt-send-entry.cgi 15432 2005-07-29 20:41:11Z bchoate $
  8.  
  9. use strict;
  10. sub BEGIN {
  11.     my $dir;
  12.     require File::Spec;
  13.     if (!($dir = $ENV{MT_HOME})) {
  14.         if ($0 =~ m!(.*[/\\])!) {
  15.             $dir = $1;
  16.         } else {
  17.             $dir = './';
  18.         }
  19.         $ENV{MT_HOME} = $dir;
  20.     }
  21.     unshift @INC, File::Spec->catdir($dir, 'lib');
  22.     unshift @INC, File::Spec->catdir($dir, 'extlib');
  23. }
  24.  
  25. eval {
  26.     require CGI;
  27.     require MT::Mail;
  28.     require MT::Entry;
  29.     require MT::Blog;
  30.     require MT;
  31.     require MT::Util;
  32.  
  33.     my $mt = MT->new() or die MT->errstr;
  34.     my $q = CGI->new;
  35.  
  36.     my $to = $q->param('to');
  37.     my $from = $q->param('from');
  38.     my $entry_id = $q->param('entry_id');
  39.     my $redirect = $q->param('_redirect');
  40.     my $msg = $q->param('message') || '';
  41.  
  42.     unless ($entry_id && $redirect) {
  43.         die "Missing required parameters\n";
  44.     }
  45.  
  46.     unless ($to = MT::Util::is_valid_email($to)) {
  47.         die "Invalid 'To' email address";
  48.     }
  49.     unless ($from = MT::Util::is_valid_email($from)) {
  50.         die "Invalid 'From' email address";
  51.     }
  52.  
  53.     for ($to, $from) {
  54.         my $cnt = $_ =~ tr/@/@/;
  55.         die "Invalid email address" if $cnt != 1;
  56.         die "Invalid email address" if /[\r\n,]/;
  57.     }
  58.     die "Message is too long"
  59.         if length($msg) > 250;
  60.  
  61.     my $entry = MT::Entry->load($entry_id)
  62.         or die "Invalid entry ID '$entry_id'";
  63.     my $blog = MT::Blog->load($entry->blog_id);
  64.  
  65.     my $link = $blog->archive_url;
  66.     $link .= '/' unless $link =~ m!/$!;
  67.     $link .= $entry->archive_file;
  68.  
  69.     my $body = <<BODY;
  70. $from has sent you a link!
  71.  
  72. $msg
  73.  
  74. Title: @{[ $entry->title ]}
  75. Link: $link
  76. BODY
  77.     my %head = ( To => $to, From => $from,
  78.                  Subject => '[' . $blog->name . '] Recommendation: ' .
  79.                             $entry->title );
  80.  
  81.     MT::Mail->send(\%head, $body)
  82.         or die "Error sending mail: ", MT::Mail->errstr;
  83.  
  84.     print $q->redirect($redirect);
  85. };
  86. if ($@) {
  87.     print "Content-Type: text/html\n\n";
  88.     print "Got an error: $@";
  89. }
  90.